package threadPool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * newCachedThreadPool具有缓存性质的线程池，线程最大空闲时间60s，线程可重复利用，没有最大线程数的限制，任务耗时短，
 * 数量大，适用于高并发，任务时间短的任务
 * newFixedThreadPool具有固定数量的线程池，核心线程数量等于最大线程数量，线程最大空闲时间0s，执行完毕即销毁
 *                  超出最大线程数进行等待，高并发下控制性能
 * newScheduledThreadPool具有时间调度特性的线程池，必须初始化核心线程数，底层使用DelayedWorkQueue实现延迟特性
 * newSingleThreadExecutor核心线程数与最大线程数均为1，用于不需要笔法顺序执行
 *
 */
public class CacheThreadPoolTest {
    /**
     * core核心线程数
     * max最大线程数
     * timeout 超时时间
     * queue 等待队列
     * @param args
     */
    public static void main(String[] args) throws InterruptedException {
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        for (int i = 0; i < 10; i++) {
            final int index = i;
            Thread.sleep(1000);
            cachedThreadPool.execute(()->{
                System.out.println(Thread.currentThread().getName() +">>" + index);
            });
        }

    }
}
